1. Technical Field
The present invention is directed to an improved data processing system. More specifically, the present invention provides a method and system for enforcing logical partitioning of resources of a single channel adapter using hardware.
2. Description of Related Art
In a System Area Network (SAN), such as an InfiniBand (IB) network, the hardware provides a message passing mechanism that can be used for Input/Output devices (I/O) and interprocess communications (IPC) among general computing nodes as well as within a single node. Processes executing on devices access SAN message passing hardware by posting send/receive messages to send/receive work queues on a SAN host channel adapter (HCA). These processes also are referred to as “consumers.”
The send/receive work queues (WQ) are assigned to a consumer as a queue pair (QP). The messages can be sent over five different transport types: Reliable Connected (RC), Reliable Datagram (RD), Unreliable Connected (UC), Unreliable Datagram (UD), and Raw Datagram (RawD). Consumers retrieve the results of these messages from a completion queue (CQ) through SAN send and receive work completion (WC) queues. The source channel adapter takes care of segmenting outbound messages and sending them to the destination. The destination channel adapter takes care of reassembling inbound messages and placing them in the memory space designated by the destination's consumer.
Two channel adapter types are present in nodes of the SAN fabric, a host channel adapter (HCA) and a target channel adapter (TCA). The host channel adapter is used by general purpose computing nodes to access the SAN fabric. Consumers use SAN verbs to access host channel adapter functions. The software that interprets verbs and directly accesses the channel adapter is known as the channel interface (CI).
Target channel adapters (TCA) are used by nodes that are the subject of messages sent from host channel adapters. The target channel adapters serve a similar function as that of the host channel adapters in providing the target node an access point to the SAN fabric.
Thus, with the SAN architecture described above, an Ethernet device driver can communicate with an Ethernet adapter by posting send/receive messages to a Host Channel Adapter (HCA) and retrieve the results of these messages through the HCA's Send and Receive Work Queues. The Ethernet adapter includes a Target Channel Adapter, which is the component that attaches to the SAN. Thus, to attach to a Local Area Network (LAN), such as an Internet Protocol (IP) and Ethernet network, an Ethernet adapter is needed as well as a switch or router that attaches the Ethernet adapter to the IP based LAN.
Often it is beneficial to logically partition the individual components within a system so as to support a plurality of operating system environments. Such logical partitioning allows each operating system, and applications operating within that operating system environment, to view the components of the system as being dedicated to that operating system environment even though, in actuality, the components are shared by a plurality of operating system environments. Such logical partitioning allows a system to support multiple different environments and thus, increases the versatility of the system while reducing the cost of maintaining the different environments by the sharing of components.
The InfiniBand architecture defines several types of resources within a channel adapter component. A channel adapter, such as a host or target channel adapter, includes multiple resources. These resources include queue pairs, completion queues, event queues, memory windows, and memory regions. In the prior art, an entire channel adapter component, including all of its internal resources, could be allocated to a single partition. However, when a channel adapter was allocated to a partition, all of that channel adapter's internal resources were also allocated to that single partition. Thus, when a particular channel adapter was allocated to a partition, all of the queue pairs, completion queues, event queues, memory windows, and memory regions that are included within the channel adapter are all also allocated to the same partition.
In the prior art, since an entire channel adapter may be assigned to and controlled by one operating system, the operating system has complete and direct control of the hardware. Thus, the operating system handles all of the I/O for all of its processes. The operating system makes sure that its different tasks do not interfere with each other. Therefore, an operating system may directly access the resources of a channel adapter to set and/or change pointer or register values.
Therefore, it would be beneficial to have a method and system for enforcing logical partitioning of the resources of a single channel adapter such individual resources within a single channel adapter could be assigned to different partitions.